Public Class DownloaderFactory

    Private Sub New()

    End Sub

    Public Enum Site
        Daz3D
        PoserPros
        RuntimeDNA
        Renderosity
        _3DCommune
    End Enum

    Public Shared Function GetDownloader(ByVal siteToDownload As Site, _
                                         ByVal imageDirectory As String, _
                                         ByVal imageHolder As PictureBox) As BaseDownloader

        Dim downloader As BaseDownloader

        Select Case siteToDownload
            Case Site.Daz3D
                downloader = New Daz3DDownloader(imageDirectory, _
                                            imageHolder)
            Case Site.PoserPros
                downloader = New PoserProsDownloader(imageDirectory, _
                                            imageHolder)
            Case Site.RuntimeDNA
                downloader = New RDNADownloader(imageDirectory, _
                                            imageHolder)
            Case Site.Renderosity
                downloader = New RenderosityDownloader(imageDirectory, _
                                                       imageHolder)
            Case Site._3DCommune
                downloader = New ThreeDCommuneDownloader(imageDirectory, _
                                                         imageHolder)
        End Select

        Return downloader

    End Function

End Class
